/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package interfaces;
import java.util.ArrayList;
import entidades.Cidade;
import erros.ErroAtualizacao;
import erros.ErroCadastramento;
import erros.ErroRecuperacao;
import erros.ErroRemocao;

/**
 * Interface que provê os serviços prestados pela controladora
 * de negócio da entidade Cidade.
 * @author thiagostuckert
 * @author daniel
 */
public interface IGerenciaCidade {
    /**
     * Recupera as cidades cadastradas no banco de dados.
     * @return Retorna uma lista de cidades cadastradas no banco.
     * @throws ErroRecuperacao Joga a exceção de erro de recuperação.
     */
    ArrayList<Cidade> recuperarCidades() throws ErroRecuperacao;
    /**
     * Cadastra uma cidade pelo nome da mesma.
     * @param cidade Cidade a ser cadastrada.
     * @throws ErroCadastramento Joga a exceção de erro de cadastramento.
     */
    void cadastrarCidade(Cidade cidade) throws ErroCadastramento;
    /**
     * Deleta a cidade indicada pelo parametro cidade;
     * @param cidade Cidade a ser deletada;
     * @throws ErroRemocao Joga a exceção de erro de remoção.
     */
    void deletarCidade(Cidade cidade) throws ErroRemocao;
    /**
     * Atualiza a cidade com base em uma cidade antiga, e modifica o seu
     * valor para uma cidade nova
     * @param cidadeVelha Cidade a ser atualizada.
     * @param cidadeNova Cidade velha modificada.
     * @throws ErroAtualizacao Joga uma exceção de atualização.
     */
    void atualizarCidade(Cidade cidadeVelha, Cidade cidadeNova)
            throws ErroAtualizacao;
}
